package com.Questions.DP;


/**
 * 乘积最大子数组
 */
public class leetcode152 {
    public int maxProduct(int[] nums) {
        if(nums.length==1){
            return nums[0];
        }
        int n=nums.length;
        int[][] dp=new int[n][2];
        dp[0][0]=nums[0];// 最大值
        dp[0][1]=nums[0];// 最小值
        int max=nums[0];// 答案的最大值
        for(int i=1;i<nums.length;++i){
            dp[i][0]=Math.max(Math.max(dp[i-1][0]*nums[i],dp[i-1][1]*nums[i]),nums[i]);
            dp[i][1]=Math.min(Math.min(dp[i-1][0]*nums[i],dp[i-1][1]*nums[i]),nums[i]);
            max=Math.max(max,dp[i][0]);
        }
        return max;
    }
}
